home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 June / PCWorld_2002-06_cd.bin / Software / Vyzkuste / girder / girder312e.exe / {app} / help / girder.php < prev    next >
PHP Script  |  2002-03-16  |  4KB  |  161 lines

  1. <?php
  2.  
  3. // php girder Internet Eventstring control example. 
  4. // WARNING DO NOT INSTALL LIKE THIS ON THE INTERNET, ABUSE IS GARANTUEED
  5.  
  6.  
  7.  
  8.   // save the settings for next use in the users cookies!
  9.   if ( isset ($HTTP_POST_VARS['host']) )
  10.     {
  11.  
  12.        setcookie ("c_host", $HTTP_POST_VARS['host'], time()+8640000);
  13.        setcookie ("c_port", $HTTP_POST_VARS['port'], time()+8640000);
  14.        setcookie ("c_password", $HTTP_POST_VARS['password'], time()+8640000);
  15.        setcookie ("c_eventstring", $HTTP_POST_VARS['eventstring'], time()+8640000);
  16.  
  17.          $c_host = $HTTP_POST_VARS['host'];
  18.          $c_port = $HTTP_POST_VARS['port'];
  19.          $c_password = $HTTP_POST_VARS['password'];
  20.          $c_eventstring = $HTTP_POST_VARS['eventstring'];                                                 
  21.     } 
  22.     else
  23.     {
  24.          $c_host = $HTTP_COOKIE_VARS['c_host'];
  25.          $c_port = $HTTP_COOKIE_VARS['c_port'];
  26.          $c_password = $HTTP_COOKIE_VARS['c_password'];
  27.          $c_eventstring = $HTTP_COOKIE_VARS['c_eventstring'];                                                 
  28.     
  29.     }
  30.  
  31.     
  32.     
  33.     
  34. // this is the function where it all happens, just take it out of 
  35. // here and do what ya like.
  36. function SendEventString($host, $port, $password, $eventstring) {
  37.  
  38.  
  39.     $fp = fsockopen($host,$port, &$errno, &$errstr);
  40.  
  41.     
  42.  
  43.     if (!$fp) { //Something didn't work....
  44.  
  45.         echo "ERROR: $errno - $errstr<br>";
  46.         return FALSE;
  47.  
  48.  
  49.  
  50.     } else {
  51.       
  52.         // First wake up the server, for security reasons it does not
  53.         // respond by it self it needs this string, why this odd word ?
  54.         // well if someone is scanning ports "connect" would be very obvious
  55.         // this one you'd never guess :-)
  56.         
  57.       fputs($fp, "quintessence\n\r");
  58.         
  59.         // The server now returns a cookie, the protocol works like the
  60.         // APOP protocol. The server gives you a cookie you add :<password>
  61.         // calculate the md5 digest out of this and send it back
  62.         // if the digests match you are in.
  63.         // We do this so that noone can listen in on our password exchange
  64.         // much safer then plain text.
  65.         
  66.         $cookie = fgets($fp, 400);        
  67.         
  68.         // Trim all enters and whitespaces off
  69.         $cookie = trim($cookie);
  70.         
  71.         // Combine the token <cookie>:<password>
  72.         $token = $cookie . ":" . $password;
  73.         
  74.         // Calculate the digest
  75.         $digest = md5($token);
  76.         
  77.         // add the enters 
  78.         $digest = $digest . "\n";
  79.                 
  80.         // Send it to the server        
  81.         fputs($fp, $digest );
  82.         
  83.         // Get the answer
  84.         $res = fgets($fp, 400);
  85.         
  86.         // If the password was correct and you are allowed to connect 
  87.         // to the server, you'll get "accept" 
  88.         if ( trim($res) != "accept" ) 
  89.         {
  90.              fclose($fp);
  91.              return FALSE;
  92.         }
  93.         
  94.         // now just pipe those commands to the server
  95.         fputs($fp, $eventstring."\n");
  96.         
  97.         // tell the server that we are done nicely.
  98.         fputs($fp, "close\n");
  99.         
  100.       fclose($fp);
  101.  
  102.   }
  103.  
  104.     return TRUE;    
  105.  
  106. }
  107.  
  108.  
  109. ?>
  110.  
  111.  
  112. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  113. <html>
  114. <head>
  115.  
  116.  <STYLE type="text/css">
  117.    BODY { color: white;  background: #3a6ea5; margin: 40px; }
  118.      TABLE { background: #888888; color: black; border: 1px; border-style: solid; }
  119.      TD { background: #AAAAAA; padding: 5px; }
  120.      H1 { font-family: Arial; font-size: Large; }
  121.  </STYLE>
  122. <title>
  123. Girder PHP Internet Event Client
  124. </title>
  125. </head>
  126. <body>
  127. <h1>Girder PHP Internet Event Client</h1>
  128. <center>
  129. <?php
  130.  
  131.   if ( isset ($host) )
  132.     {
  133.  
  134.       if (SendEventString($HTTP_POST_VARS['host'],$HTTP_POST_VARS['port'],$HTTP_POST_VARS['password'],$HTTP_POST_VARS['eventstring']) )
  135.       {
  136.         echo "Eventstring sent succesfully!<Br><br>";
  137.       }    
  138.     else
  139.         {
  140.         echo "Failure: Incorrect Password or not allowed to connect to host<Br>Note: After an incorrect login your IP address will be blocked for 5 seconds, after the second try for 10 and so forth.<br><br>";         
  141.         }        
  142.   }
  143.     
  144. ?>
  145.  
  146. <form method="post" action="gir_ctrl.php">
  147.  
  148. <table>
  149. <tr><td>Hostname</td><td><input type=text name=host value="<?php echo $c_host; ?>"></td></tr>
  150. <tr><td>Port</td><td><input type=text name=port value="<?php echo $c_port; ?>"></td></tr>
  151. <tr><td>Password</td><td><input type=password name=password value="<?php echo $c_password; ?>"></td></tr>
  152. <tr><td>Eventstring</td><td><input type=text name=eventstring value="<?php echo $c_eventstring; ?>"></td></tr>
  153. <TR><TD COLSPAN=2 ALIGN=CENTER><input type=submit value="Send" name="Go"></TD></TR>
  154. </table>
  155. </form>
  156.  
  157. </center>
  158. </body>
  159.  
  160. </html>
  161.